// 
// Copyright 2010 Classpath Pty Ltd <opensource@classpath.com.au>
// 
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// 
//     http://www.apache.org/licenses/LICENSE-2.0
// 
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// 

using build

**
** Tests the `CanDropColumn` mixin.
**
internal class CanDropColumnTest : Test {

    **
    ** Stores an instance of `CanDropColumn` for testing.
    **
    CanDropColumn? canDropColumn

    **
    ** Performs additional setup needed for `CanDropColumnTest`.
    **
    override Void setup() {
        super.setup()
        canDropColumn = CanDropColumnTestClass()
    }

    **
    ** Cleans up additional setup needed for `CanDropColumnTest`.
    **
    override Void teardown() {
        super.teardown()
        canDropColumn = null
    }

    **
    ** Tests the `CanDropColumn.dropColumn` method.
    **
    Void testDropColumn() {
        column := canDropColumn.dropColumn("column_name")
        verifyEq("column_name", column.name)
        verifyEq(1, canDropColumn.modifications.size)
        verifyEq(column, canDropColumn.modifications[0])
    }

}

**
** Provides a simple implementation of `CanDropColumn` for testing.
**
internal class CanDropColumnTestClass : CanDropColumn {

    **
    ** Stores the list of [Modifications]`Modification` for testing.
    **
    override Modification[] modifications := [,]

}
